package org.jpro.common.redis;

import java.io.Serializable;
import java.util.Set;

/**
 * <P>功能描述 : redis接口 </P>
 * <P>File name : IRedisService </P>
 * <P>Author : 王泽浩 </P>
 * <P>E-Mail : 1028625100@qq.com </P>
 * <P>Date : 2017/3/8 下午5:30</P>
 */
public interface IRedisService {
    /**
     * 通过key删除
     * @param keys
     */
    long del(String... keys);

    /**
     * 添加key value 并且设置存活时间(byte)
     * @param key
     * @param value
     * @param liveTime
     */
    void set(Serializable key, Object value, long liveTime);

    /**
     * 添加key value 并且设置存活时间
     * @param key
     * @param value
     * @param liveTime
     *        单位秒
     */
    void set(String key, Object value, long liveTime);

    /**
     * 添加key value
     * @param key
     * @param value
     */
    void set(String key, Object value);

    /**
     * 添加key value (字节)(序列化)
     * @param key
     * @param value
     */
    void set(Serializable key, Serializable value);

    /**
     * 获取redis value (String)
     * @param key
     * @return
     */
    String get(String key);

    /**
     * 通过正则匹配keys
     * @param pattern
     * @return
     */
    Set keys(String pattern);

    /**
     * 检查key是否已经存在
     * @param key
     * @return
     */
    boolean exists(String key);

    /**
     * 清空redis 所有数据
     * @return
     */
    String flushDB();

    /**
     * 查看redis里有多少数据
     */
    long dbSize();

    /**
     * 检查是否连接成功
     * @return
     */
    String ping();

}
